﻿using EmbeddedSharp.Core;
namespace Zove.Runtime.Core {
    /// <summary>
    /// Language nature
    /// </summary>
    public interface ILanguageNature {
        /// <summary>
        /// Class finder
        /// </summary>
        IClassFinder ClassFinder { get; }

        /// <summary>
        /// Class loader
        /// </summary>
        IClassLoader ClassLoader { get; }

        IFunctionManager FunctionManager { get; }

        IExpressionParserFactory ExpressionParserFactory { get; }

        /// <summary>
        /// Class parser
        /// </summary>
        IClassParserFactory ClassParserFactory { get; }

        /// <summary>
        /// The name of the atom type
        /// </summary>
        string[] AtomicTypes { get; }

        /// <summary>
        /// Model loader
        /// </summary>
        IRuntimeModelLoader ModelLoader { get; }

        /// <summary>
        /// Expression translator
        /// </summary>
        IExpressionTranslator ExpressionTranslator { get; }
    }
}